package com.eds.service;

import com.eds.pojo.RecommendationDTO;
import com.pojo.AiConversation;
import com.pojo.AiMessage;
import com.pojo.Course;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * AI服务接口
 * 定义AI聊天功能的所有业务逻辑方法
 */
@Service
public interface AiService {

    /**
     * 处理用户发送的消息并获取AI回复
     * 将用户消息保存到数据库，调用AI模型获取回复，并返回处理结果
     *
     * @param message        用户发送的消息内容
     * @param conversationId 会话ID，如果为null则创建新会话
     * @param token          用户认证令牌
     * @return 包含AI回复的响应对象
     */
    Map<String, Object> processMessage(String message, Long conversationId, String token);

    /**
     * 获取用户的所有对话列表
     * 根据用户ID查询该用户的所有有效对话
     *
     * @param token 用户认证令牌
     * @return 对话列表
     */
    List<AiConversation> getUserConversations(String token);

    /**
     * 获取特定对话的消息历史
     * 根据会话ID查询该会话的所有消息记录
     *
     * @param conversationId 会话ID
     * @param token          用户认证令牌
     * @return 消息列表
     */
    List<AiMessage> getConversationHistory(Long conversationId, String token);

    /**
     * 创建新的对话
     * 为用户创建一个新的对话，设置初始标题
     *
     * @param title 对话标题
     * @param token 用户认证令牌
     * @return 新创建的对话ID
     */
    Long createConversation(String title, String token);

    /**
     * 删除对话
     * 标记指定的对话为已删除状态
     *
     * @param conversationId 要删除的对话ID
     * @param token          用户认证令牌
     * @return 操作是否成功
     */
    boolean deleteConversation(Long conversationId, String token);

    //获取用户个性化推荐
    List<RecommendationDTO> getRecommendationsForUser(Long userId);

    //获取热门推荐
    List<RecommendationDTO> getHotRecommendations();

    //将热门推荐数据转换为课程列表
    List<Course> hotCacheChangeRecommendationDtoToCourse();

    //将用户个性化推荐数据转换为课程列表
    List<Course> userCacheChangeRecommendationDtoToCourse(String token);

    //获取开心推荐
    List getHappyRecommendations();

    //将开心推荐数据转换为课程列表
    String happyCacheChangeRecommendationDtoToCourse();
}